package com.admin.dao;

import java.util.ArrayList;

import org.apache.ibatis.annotations.Param;

import com.common.model.ClassInfo;
import com.common.model.Department;
import com.common.model.StudentUser;
import com.common.model.TeacherUser;
public interface AdminCTSDao {
	//***********************************班级
	/**
	 * 读取某学院下所有的班级
	 * @param clgId
	 * @param start
	 * @return
	 */
	public ArrayList<ClassInfo> getClassesByClgId(@Param("clg_id")int clgId,@Param("start")int start);
	/**
	 * 读取某学院下所有班级数目
	 * @param clgId
	 * @return
	 */
	public int getClassesCountByClgId(int clgId);
	//*******************************班级修改
	/**
	 * 添加一个班级
	 * @param classinfo
	 * @return
	 */
	public int insertClass(ClassInfo classinfo);
	/**
	 * 修改一个班级
	 * @param classinfo
	 * @return
	 */
	public int updateClass(ClassInfo classinfo);
	/**
	 * 删除一个班级
	 * @param classId
	 * @return
	 */
	public int deleteClass(int classId);
	//******************************班级修改辅助
	/**
	 * 通过班级id获取班级
	 * @param classId
	 * @return
	 */
	public ClassInfo getClassByClassId(int classId);
	/**
	 *通过班级no获取班级
	 * @param classNo
	 * @return
	 */
	public ClassInfo getClassByClassNo(String classNo);	
	/**
	 *通过班级name获取班级
	 * @param classNo
	 * @return
	 */
	public ClassInfo getClassByClassName(String className);
	/**
	 * 读取指定的no有多少个班级
	 * @param classNo
	 * @return
	 */
	public int getClassCountByClassNo(String classNo);
	/**
	 * 读取指定的name有多少个班级
	 * @param classNo
	 * @return
	 */
	public int getClassCountByClassName(String className);
	/**
	 * 查询某班级下学生人数
	 * @param classId
	 * @return
	 */
	public int getStudentsCountByClassId(int classId);
	//学生
	/**
	 * 分页查询某班级下所有学生
	 * @param classId
	 * @param start
	 * @return
	 */
	public ArrayList<StudentUser>getStudentsByClassId(@Param("class_id")int classId,@Param("start")int start);
	/**
	 * 根据学生id查询学生
	 * @param stuId
	 * @return
	 */
	public StudentUser getStudentByStuId(int stuId);
	/**
	 * 根据学生no查询学生
	 * @param stuNo
	 * @return
	 */
	public StudentUser getStudentByStuNo(String stuNo);
	//***************学生查询辅助
	/**
	 * 通过系获取下面的所有班级
	 * @param depId
	 * @return
	 */
	public ArrayList<ClassInfo> getClassesByDepId(int depId);
	/**
	 * 获取某系下面最小的班级id 
	 * @param depId
	 * @return
	 */
	public int getMinClassIdOfDepartment(int depId);
	/**
	 * 获取某学院下面最小的班级id
	 * @param clgId
	 * @return
	 */
	public ClassInfo getMinClassOfCollege(int clgId);
	/**
	 * 获取最小的班级id
	 * @return
	 */
	public ClassInfo getMinClass();
	//*****************************修改学生
	/**
	 * 增加一个学生
	 * @param student
	 * @return
	 */
	public int insertStudent(StudentUser student);
	/**
	 * 修改一个学生
	 * @param student
	 * @return
	 */
	public int updateStudent(StudentUser student);
	/**
	 * 重置学生密码
	 * @param password
	 * @param stuId
	 * @return
	 */
	public int resetStudentPassword(@Param("password")String password,@Param("stu_id")int stuId);
	/**
	 * 删除一个学生
	 * @param stuId
	 * @return
	 */
	public int deleteStudent(int stuId);
	//*******************修改学生辅助
	/**
	 * 查询学生已的意向选题个数
	 * @param stuId
	 * @return
	 */
	public int getIntentProjectCountOfStudent(int stuId);
	/**
	 * 查询学生成功选择的毕业设计个数
	 * @param stuId
	 * @return
	 */
	public int getProjectCountOfStudent(int stuId);
	//*********************查询教师
	/**
	 * 通过系读取教师
	 * @param depId
	 * @param start
	 * @return
	 */
	public ArrayList<TeacherUser> getTeachersByDepId(@Param("dep_id")int depId,@Param("start")int start);
	/**
	 * 查询指定系下所有的教师
	 * @param depId
	 * @return
	 */
	public ArrayList<TeacherUser> getAllTeacherOfDep(int depId);
	//***************修改
	/**
	 * 增加一个教师
	 * @param teacher
	 * @return
	 */
	public int insertTeacher(TeacherUser teacher);
	/**
	 * 修改一个教师
	 * @param teacher
	 * @return
	 */
	public int updateTeacher(TeacherUser teacher);
	/**
	 * 重置教师密码
	 * @param password
	 * @param teaId
	 * @return
	 */
	public int resetTeacherPassword(@Param("password")String password,@Param("tea_id")int teaId);
	/**
	 * 删除一个教师
	 * @param teaId
	 * @return
	 */
	public int deleteTeacher(int teaId);
	//****************修改辅助
	/**
	 * 通过教师id获取教师
	 * @param teaId
	 * @return
	 */
	public TeacherUser getTeacherByTeacherId(int teaId);
	/**
	 * 通过教师no获取教师
	 * @param teaNo
	 * @return
	 */
	public TeacherUser getTeacherByTeacherNo(String  teaNo);
	/**
	 * 通过教师name获取教师
	 * @param teaName
	 * @return
	 */
	public ArrayList<TeacherUser> getTeachersByTeacherName(String  teaName);
	/**
	 * 根据系名获取系
	 * @param depName
	 * @return
	 */
	public Department getDepartmentByDepName(String depName);
	/**
	 * 查询指定教师下的毕业设计题目数量
	 * @param teaId
	 * @return
	 */
	public int getProjectCountOfTeacher(int teaId);
}
